/*
 * ParametersManager.cuh
 *
 *  Created on: Aug 7, 2013
 *      Author: jaime
 */

#ifndef PARAMETERSMANAGER_CUH_
#define PARAMETERSMANAGER_CUH_

#include "../JobsManager/JobChooser.cuh"

class ParametersManager {
public:
	ParametersManager(int argc, char** argv);
	bool valid_parameters();
	bool has_help_parameter();
	char* get_input_file();
	char* get_output_file();
	char get_unknown_parameter();
	int get_number_of_threads();
	int get_number_of_blocks();
	int get_verbosity_level();
	bool get_preprocess_unary_clauses();
	ChoosingStrategy get_choosing_strategy();
	bool get_sequential_as_parallel();
	void print_help(char** argv);
	void force_sequential_configuration();

private:
	char* input_file;
	char* output_file;
	int number_of_threads;
	int number_of_blocks;
	int verbosity_level;
	ChoosingStrategy strategy;
	bool correct;
	bool has_help;
	bool sequential_as_parallel;
	bool preprocess_unary_clauses;
	char unknown_parameter;
	void process(int argc, char** argv);
};

#endif /* PARAMETERSMANAGER_CUH_ */
